package com.imooc.service;

import java.util.List;

import com.imooc.netty.ChatMsg;
import com.imooc.pojo.Users;
import com.imooc.pojo.vo.FriendRequestVO;
import com.imooc.pojo.vo.MyFriendsVO;

/***
 *                    _ooOoo_
 *                   o8888888o
 *                   88" . "88
 *                   (| -_- |)
 *                    O\ = /O
 *                ____/`---'\____
 *              .   ' \\| |// `.
 *               / \\||| : |||// \
 *             / _||||| -:- |||||- \
 *               | | \\\ - /// | |
 *             | \_| ''\---/'' | |
 *              \ .-\__ `-` ___/-. /
 *           ___`. .' /--.--\ `. . __
 *        ."" '< `.___\_<|>_/___.' >'"".
 *       | | : `- \`.;`\ _ /`;.`/ - ` : | |
 *         \ \ `-. \_ __\ /__ _/ .-` / /
 * ======`-.____`-.___\_____/___.-`____.-'======
 *                    `=---='
 *
 * .............................................
 *          佛祖保佑             永无BUG
 */
/***
 * @ClassName: UserService
 * @Description:
 * @author: wupeng
 * @date: 2018年12月22日 上午8:29:28
 */
public interface UserService
{
	/**
	 * 判断用户名是否存在
	 */
	public boolean queryUsernameIsExist(String username);

	/**
	 * 查询用户是否存在
	 */
	public Users queryUserForLogin(String username, String pwd);

	/**
	 * 用户注册
	 */
	public Users saveUser(Users user);

	/**
	 * 修改用户信息
	 */
	public Users updateUserInfo(Users user);

	/**
	 * 搜索朋友的前置条件
	 */
	public Integer preconditionSearchFriends(String myUserId, String friendUsername);

	/**
	 * 根据用户名查询用户对象
	 */
	public Users queryUserInfoByUsername(String username);

	/**
	 * 添加好友请求记录，保存到数据库
	 */
	public void sendFriendRequest(String myUserId, String friendUsername);

	/**
	 * 查询好友请求
	 */
	public List<FriendRequestVO> queryFriendRequestList(String acceptUserId);

	/**
	 * 删除好友请求记录
	 */
	public void deleteFriendRequest(String sendUserId, String acceptUserId);

	/**
	 * 通过好友请求 1. 保存好友 2. 逆向保存好友 3. 删除好友请求记录
	 */
	public void passFriendRequest(String sendUserId, String acceptUserId);

	/**
	 * 查询好友列表
	 */
	public List<MyFriendsVO> queryMyFriends(String userId);

	/**
	 * 保存聊天消息到数据库
	 */
	public String saveMsg(ChatMsg chatMsg);

	/**
	 * 批量签收消息
	 */
	public void updateMsgSigned(List<String> msgIdList);

	/**
	 * 获取未签收消息列表
	 */
	public List<com.imooc.pojo.ChatMsg> getUnReadMsgList(String acceptUserId);
}
